<?php
namespace app;
use dir1\dir11\ClassObj;
use dir1\dir11\ClassObj2;
header("content-type:text/plain;charset=utf-8");

//TP5自动加载原理
spl_autoload_register(function($class){
	// 如果实例化一个不存在的类，则调用该方法，$class参数就是“不存在的类”的命名空间路径
	// var_dump($class);//string(19) "dir1\dir11\ClassObj"
	$re = explode('\\', $class);
	// var_dump($re);
	// $file = __DIR__ . '/' . $re[0] . '/' . $re['1'] . '/' . $re[2] . ".php";//这里应该用循环，把数组中所有的项都连接起来
	//这里用字符串替换效率应该更高一些
	$dir = '';
	foreach($re as $v){
		$dir .= '/' . $v;
	}
	$file = __DIR__ . $dir . ".php";
	
	if(file_exists($file)){
		include($file);
	}else{
		var_dump("不存在的类！");
	}
}, true, true);

$ClassObj = new ClassObj;
$ClassObj->func2();

// $ClassObj2 = new ClassObj2;
// $ClassObj2->func2();		//这个就不能自动加载出来，因为ClassObj2的命名空间是“obj2”， 没有遵循目录结构的的原则
